1 module mruby.range;
2 
3 import mruby.value;
4 import mruby.mrb_class;
5 import mruby.object;
6 import mruby;
7 
8 extern (C):
9 
10 struct mrb_range_edges
11 {
12 	mrb_value beg;
13 	mrb_value end;
14 }
15 
16 struct RRange
17 {
18 	enum mrb_vtype
19 	{
20 		MRB_TT_FALSE = 0,
21 		MRB_TT_FREE = 1,
22 		MRB_TT_TRUE = 2,
23 		MRB_TT_FIXNUM = 3,
24 		MRB_TT_SYMBOL = 4,
25 		MRB_TT_UNDEF = 5,
26 		MRB_TT_FLOAT = 6,
27 		MRB_TT_CPTR = 7,
28 		MRB_TT_OBJECT = 8,
29 		MRB_TT_CLASS = 9,
30 		MRB_TT_MODULE = 10,
31 		MRB_TT_ICLASS = 11,
32 		MRB_TT_SCLASS = 12,
33 		MRB_TT_PROC = 13,
34 		MRB_TT_ARRAY = 14,
35 		MRB_TT_HASH = 15,
36 		MRB_TT_STRING = 16,
37 		MRB_TT_RANGE = 17,
38 		MRB_TT_EXCEPTION = 18,
39 		MRB_TT_FILE = 19,
40 		MRB_TT_ENV = 20,
41 		MRB_TT_DATA = 21,
42 		MRB_TT_FIBER = 22,
43 		MRB_TT_MAXDEFINE = 23
44 	}
45 	mrb_vtype tt;
46 	uint color;
47 	uint flags;
48 	RClass* c;
49 	RBasic* gcnext;
50 	mrb_range_edges* edges;
51 	mrb_bool excl;
52 }
53 
54 mrb_value mrb_range_new (mrb_state*, mrb_value, mrb_value, mrb_bool);
55 mrb_bool mrb_range_beg_len (mrb_state* mrb, mrb_value range, mrb_int* begp, mrb_int* lenp, mrb_int len);
56 mrb_value mrb_get_values_at (mrb_state* mrb, mrb_value obj, mrb_int olen, mrb_int argc, const(mrb_value)* argv, mrb_value function (mrb_state*, mrb_value, mrb_int) func);